﻿@model IEnumerable<Candidates>
@using Kendo.Mvc.UI
@if (Model.Count() > 0)
{
    @( Html.Kendo().Grid(Model)
                .Name("griddata")
                .Pageable(page => page
                        .ButtonCount(7)
                        .Info(true)
                        .Refresh(true)
                            .Messages(mess => mess
                                     .Display("{0}-{1} của {2} bản ghi.")
                                            .Empty("Không có dữ liệu")
                                            .Refresh("Làm mới")
                                            .First("Trang đầu tiên")
                                            .Last("Trang cuối cùng")
                                            .Next("Trang tiếp")
                                            .Previous("Trang trước")
                                      )
                                     .Input(true)
                                            .Messages(mess =>
                                            {
                                                mess.Of("của {0}");
                                                mess.Page("Trang");
                                            })

                                )
                            .Columns(columns =>
                                {
                                    //columns.ClientTemplate("<input type='checkbox' #= CheckboxColumn? checked='checked': checked='' # class='chkbx' />");
                                    columns.Bound(p => p.MaTS).Width(90).Locked(true).Lockable(false).Title("Mã TS");
                                    columns.Bound(p => p.HoDem).Width(150).Locked(true);
                                    columns.Bound(p => p.Ten).Width(150).Locked(true);
                                    columns.Bound(p => p.GioiTinh).Width(110).Title("Giới tính");
                                    //columns.Bound(p => p.TenMon).Width(110).Title("Môn");
                                    columns.Bound(p => p.NgaySinh).Width(110).Lockable(false);
                                    columns.Bound(p => p.SoDienThoai).Width(110).Lockable(false).Title("Điện thoại");
                                    columns.Bound(p => p.Email).Width(200).Lockable(false);
                                    columns.Bound(p => p.TenDanToc).Width(110).Lockable(false).Title("Dân tộc");
                                    columns.Bound(p => p.TenHuyen).Width(150).Lockable(false).Title("Huyện/Quận");
                                    columns.Bound(p => p.TenTinh).Width(150).Lockable(false).Title("Tỉnh/TP");
                                    columns.Bound(p => p.DiaChi).Width(250).Lockable(false);
                                    columns.Group(group => group.Title("Lớp 10").HeaderHtmlAttributes(new { @style = "text-align: center;border-bottom-width: 1px;border-bottom-color: #c5c5c5;" })
                                        .Columns(info =>
                                        {
                                            info.Bound(p => p.TenTinhTruong10).Width(150).Lockable(false).Title("Tỉnh/TP-Trường");
                                            info.Bound(p => p.TenTruong10).Width(250).Lockable(false).Title("Trường THPT");
                                            //info.Bound(p => p.DiemLop10).Width(130).Lockable(false).Title("Điểm TB");
                                        }));
                                    columns.Group(group => group.Title("Lớp 11").HeaderHtmlAttributes(new { @style = "text-align: center;border-bottom-width: 1px;border-bottom-color: #c5c5c5;" })
                                       .Columns(info =>
                                       {
                                           info.Bound(p => p.TenTinhTruong11).Width(150).Lockable(false).Title("Tỉnh/TP-Trường");
                                           info.Bound(p => p.TenTruong11).Width(250).Lockable(false).Title("Trường THPT");
                                           //info.Bound(p => p.DiemLop11).Width(130).Lockable(false).Title("Điểm TB");
                                       }));

                                    columns.Group(group => group.Title("Lớp 12").HeaderHtmlAttributes(new { @style = "text-align: center;border-bottom-width: 1px;border-bottom-color: #c5c5c5;" })
                                        .Columns(info =>
                                        {
                                            info.Bound(p => p.TenTinhTruong12).Width(150).Lockable(false).Title("Tỉnh/TP-Trường");
                                            info.Bound(p => p.TenTruong12).Width(250).Lockable(false).Title("Trường THPT");
                                            //info.Bound(p => p.DiemLop12).Width(130).Lockable(false).Title("Điểm TB");
                                        }));
                                    
                                    //columns.Bound(p => p.DiemLop10).Width(130).Lockable(false);
                                    //columns.Bound(p => p.DiemLop11).Width(130).Lockable(false);
                                    //columns.Bound(p => p.DiemLop12).Width(130).Lockable(false);
                                    //columns.Bound(p => p.DiemTBTHPT).Width(140).Lockable(false);
                                    //columns.Bound(p => p.DiemTBTN).Width(130).Lockable(false);
                                    //columns.Bound(p => p.TinhTrangTotNghiep).Width(110).Lockable(false).Title("Tốt nghiệp");
                                    columns.Bound(p => p.TenDoiTuong).Width(200).Lockable(false).Title("Đối tượng ưu tiên");
                                    columns.Bound(p => p.TenBacDaoTao).Width(150).Lockable(false);
                                    columns.Bound(p => p.TenKhoiThi).Width(110).Lockable(false);
                                    columns.Bound(p => p.TenNganh).Width(250).Lockable(false);
                                    columns.Bound(p => p.TenChuyenNganh).Width(250).Lockable(false);
                                    columns.Bound(p => p.NgayDangKy).Width(140).Lockable(false);
                                    columns.Bound(p => p.NgayDongTien).Width(140).Lockable(false);
                                    columns.Bound(p => p.NgayHoanThanhDK).Width(140).Lockable(false);
                                    columns.Bound(p => p.HinhThucDK).Width(140).Lockable(false);
                                    //    columns.ForeignKey(p => p.HinhThucDK, (System.Collections.IEnumerable)ViewBag.HinhThucDK, "HinhThucDK", "HinhThucDK")
                                    //.Title("Hình thức đăng ký");

                                    //columns.Template(@<text>Sửa</text>).ClientTemplate("<a class='k-button k-button-icontext' href='"  + Url.Action("EditRegistration", "CandidateManagement") + "/#=MaTS#'><span class='k-icon k-edit'></span>Sửa</a>").Title("Sửa");
                                    columns.Command(command =>
                                    {
                                        //command.Edit().Text("Sửa").UpdateText("Cập nhật");
                                        command.Destroy().Text("Xóa");
                                    })
                                        .Title("Xóa");
                                })
                            .Scrollable(scrollable => scrollable.Height("auto"))
                            .Reorderable(reorderable => reorderable.Columns(true))
                            .Resizable(resizable => resizable.Columns(true))
                    // Sửa kiểu popup
                    .Editable(editable =>
                    {
                        //editable.Mode(GridEditMode.PopUp).TemplateName("CommuneEditor");
                        editable.ConfirmDelete("Bạn có muốn xóa? (Lưu ý: các thông tin về điểm, tài khoản... sẽ bị xóa theo!)");
                        editable.Window(window =>
                        {
                            //window.Width(450);

                            window.Title("Thêm/sửa dữ liệu");
                            window.Animation(false);
                        });

                        editable.DisplayDeleteConfirmation("Bạn có muốn xóa? (Lưu ý: các thông tin về điểm, tài khoản... sẽ bị xóa theo!)");
                    })
                    .Sortable()    // Cho phép sắp xếp dữ liệu
                    // Cho phép lọc dữ liệu
                    .Filterable(filterable => filterable
                            .Messages(mess => mess
                                .And("Và")
                                .Clear("Xóa")
                                .Filter("Lọc")
                                .Info("Điều kiện lọc tìm kiếm")

                                )
                                .Extra(false)

                            .Operators(operators => operators
                                .ForString(str => str.Clear()
                                    .StartsWith("Bắt đầu với")
                                    .IsEqualTo("Đúng bằng")
                                    .IsNotEqualTo("Không bao gồm")
                                    .Contains("Chứa ký tự")
                                )
                                .ForNumber(num => num
                                        .Clear()
                                        .IsGreaterThan("Lớn hơn")
                                        .IsEqualTo("Bằng")
                                        .IsNotEqualTo("Nhỏ hơn")
                    )))

                // Cài đặt nguồn dữ liệu
                .DataSource(dataSource => dataSource
                        .Ajax()   // Mọi thao tác thực hiện thông qua Ajax
                        .ServerOperation(false) // Ko cho gửi request bằng cách load lại trang mà thông qua Ajax

                        .PageSize(7)   // Số row hiển thị trên Grid
                        .Model(model =>
                            {
                                model.Id(p => p.MaTS);  // Chỉ ra khóa của Grid
                                model.Field(p => p.MaTS).Editable(false);
                                //model.Field(p => p.MaKhoa).DefaultValue(1);
                            }
                            )
                        .Sort(item =>
                        {
                            // Mặc định khi load dữ liệu lên Grid sẽ sắp xếp giảm theo Id
                            item.Add(data => data.MaTS).Descending();
                        })
                    // Cài đặt các sự kiện khi thay đổi dữ liệu
                        .Events(events =>
                        {
                            events.Error("onError");
                            events.RequestEnd("onRequestEnd");
                        })
                    // Gán Action khi thêm dữ liệu
                                    //.Create(update => update.Action( "Default", new { controller = "Common", action = "PhieuDangKy", Layout = "" }, aj))
                                //.Create(update => update.Action("EditingPopup_CreateCandidateList", "CandidateManagement"))
                    // Gán Action khi đổ dữ liệu lên Grid
                            //.Read(read => read.Action("EditingPopup_ReadCandidateList", "CandidateManagement"))
                // Sửa
                            .Update(update => update.Action("EditingPopup_UpdateCandidateList", "CandidateManagement"))
                // Xóa
                            .Destroy(update => update.Action("EditingPopup_DestroyCandidateList", "CandidateManagement"))
                )
               .ToolBar(toolbar =>
                    {
                        //toolbar.Excel().Text("Xuất Excel");
                        toolbar.Template(@<text>
                            <div class="toolbar" style="float:right">
                                <a class="btn btn-danger" id='printGrid'>Xuất Excel</a>
                            </div>
                        </text>);
                    })
        // Cài đặt thanh Menu bên trên Grid

                    .Events(events =>
                    {
                        //events.Change("onEdit");
                        //events.Cancel("onEdit");
                        events.Edit("onEdit");
                        //events.ColumnLock
                    })
        //.ClientDetailTemplateId("client-template")
    )
}
else
{
    <h4 class="no-data">Không có dữ liệu</h4>
}

<script>
    $("#printGrid").click(function (e) {
        var dataSource = $("#griddata").data("kendoGrid").dataSource;
        var filters = dataSource.filter();
        var allData = dataSource.data();
        var query = new kendo.data.Query(allData);
        var data = query.filter(filters).data;

        var result = "";
        //Defining the headers
        result += "<style>.text{ mso-number-format:'@Html.Raw("@")';} table { border-collapse: collapse;padding: 8px;} th {background-color: #ddd;} table, td, th { font-family: Times New Roman; font-size: 17px; border: 1px solid black; padding: 5px; border-width: thin; } </style>";
        result += "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>";
        result += "<table><tr><th>STT</th><th>Mã TS</th><th>Họ đệm</th><th>Tên</th><th>Giới tính</th><th>Ngày sinh</th><th>Số điện thoại</th><th>Email</th><th>Dân tộc</th><th>Huyện</th><th>Tỉnh</th><th>Địa chỉ</th><th>Tỉnh(trường THPT)</th><th>Trường THPT</th><th>Điểm lớp 10</th><th>Điểm lớp 11</th><th>Điểm lớp 12</th><th>Điểm TBTHPT</th><th>Tình trạng tốt nghiệp</th><th>Năm tốt nghiệp</th><th>Đối tượng ưu tiên</th><th>Hệ đào tạo</th><th>Khối thi</th><th>Ngành</th><th>Chuyên ngành</th><th>Ngày đăng ký</th><th>Ngày đóng tiền</th><th>Ngày hoàn thành</th><th>Hình thức đăng ký</th></tr>";
        //Filling in the data
        var count = 0;
        function convert(str) {
            if (str != null) {
                return kendo.format("{0:dd/MM/yyyy}", str)
            }
        }
        for (var i = 0; i < data.length; i++) {
            count = count + 1;
            result += "<tr>";
            result += "<td>" + count + "</td>";
            result += "<td>" + data[i].MaTS + "</td>";
            result += "<td>" + data[i].HoDem + "</td>";
            result += "<td>" + data[i].Ten + "</td>";

            if (data[i].GioiTinh == 0) {
                result += "<td>" + 'Nam' + "</td>";
            }
            else {
                result += "<td>" + 'Nữ' + "</td>";
            }

            result += "<td>" + (convert(data[i].NgaySinh)) + "</td>";

            result += "<td class='text'>" + data[i].SoDienThoai + "</td>";
            result += "<td>" + data[i].Email + "</td>";
            result += "<td>" + data[i].TenDanToc + "</td>";

            result += "<td>" + data[i].TenHuyen + "</td>";
            result += "<td>" + data[i].TenTinh + "</td>";
            result += "<td>" + data[i].DiaChi + "</td>";
            result += "<td>" + data[i].TenTinhTruong + "</td>";
            result += "<td>" + data[i].TenTruong + "</td>";
            result += "<td>" + data[i].DiemLop10 + "</td>";
            result += "<td>" + data[i].DiemLop11 + "</td>";
            result += "<td>" + data[i].DiemLop12 + "</td>";
            result += "<td>" + data[i].DiemTBTHPT + "</td>";
            if (data[i].TinhTrangTotNghiep == 0) {
                result += "<td>" + 'Chưa tốt nghiệp' + "</td>";
            }
            else {
                result += "<td>" + 'Đã tốt nghiệp' + "</td>";
            }
            result += "<td>" + data[i].NamTotNghiep + "</td>";
            result += "<td>" + data[i].TenDoiTuong + "</td>";
            result += "<td>" + data[i].TenBacDaoTao + "</td>";
            result += "<td>" + data[i].TenKhoiThi + "</td>";
            result += "<td>" + data[i].TenNganh + "</td>";
            result += "<td>" + data[i].TenChuyenNganh + "</td>";
            result += "<td>" + convert(data[i].NgayDangKy) + "</td>";
            if (data[i].NgayDongTien == null) {
                result += "<td>" + '' + "</td>";
            }
            else {
                result += "<td>" + convert(data[i].NgayDongTien) + "</td>";
            }
            if (data[i].NgayHoanThanhDK == null) {
                result += "<td>" + '' + "</td>";
            }
            else {
                result += "<td>" + convert(data[i].NgayHoanThanhDK) + "</td>";
            }
            result += "<td>" + data[i].HinhThucDK + "</td>";
            result += "</tr>";
        }
        result += "</table>";

        var uri = 'data:application/vnd.ms-excel;base64,'
     , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->{table}</body></html>'
     , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
     , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }

        var ctx = { worksheet: name || 'Worksheet', table: result }

        $(this).attr('download', 'Thí sinh.xls');
        $(this).attr('href', uri + base64(format(template, ctx)));

    });
</script>